﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.ComponentModel;



class muu
{
    static void Main(string[] args)
    {
        Console.OutputEncoding = Encoding.UTF8;
        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine("The \"Muu\" Game");
        Console.WriteLine(" \u00a9 Peter Gospodinov 2013");
        Console.WriteLine();
        Console.WriteLine();
        Console.WriteLine();
        Console.WriteLine();
        Console.WriteLine("КРАВИ и БИКОВЕ");
        Console.WriteLine("Отгатнете генерираното от компютъра 4 цифрено число.");
        Console.WriteLine("    Ако дадена цифра от предположението ви се съдържа в числото и се намира");
        Console.WriteLine("на същата позиция се отбелязва като \"бик\".");
        Console.WriteLine("Ако се съдържа в числото но се намира на различно място се отбелязва като");
        Console.WriteLine("\"крава\".");
        Console.WriteLine();
        Console.WriteLine();
        Console.Write("Press any key to continue");
        Console.ReadKey();
        Console.Clear();
        int compA = 0;
        int compB = 0;
        int compC = 0;
        int compD = 0;
        int compNumber = 0;
        Random rm = new Random();
        do
        {
            compNumber = rm.Next(1000, 9999);
            compA = ((compNumber / 1000) % 10);
            compB = ((compNumber / 100) % 10);
            compC = ((compNumber / 10) % 10);
            compD = (compNumber % 10);
        } while ((compA == compB) || (compB == compC) || (compC == compD));
        //Console.WriteLine(compNumber);
        int userNumber;
        int bull = 0;
        int cow = 0;
        int attemptsCounter = 0;
        string sBull;
        string sCow;
        int highScore = 0;
        do
        {
            attemptsCounter++;
            do
            {
                bull = 0;
                cow = 0;
                Console.Write("Опит [{0}] Въведете четирицифрено число: ", attemptsCounter);
                userNumber = Convert.ToInt32(Console.ReadLine());
                if ((userNumber < 1000) || (userNumber > 9999))
                {
                    Console.WriteLine("Невалидно число! опитайте пак.");
                    Console.WriteLine();
                }
            } while ((userNumber < 1000) || (userNumber > 9999));

            int userA = ((userNumber / 1000) % 10);
            int userB = ((userNumber / 100) % 10);
            int userC = ((userNumber / 10) % 10);
            int userD = (userNumber % 10);
            
            //bull  - cow;
            if ((userA == compA) || (userA == compB) || (userA == compC) || (userA == compD))
            {
                cow++;
                if (userA == compA)
                {
                    cow--;
                    bull++;
                }
            }
            if ((userB == compA) || (userB == compB) || (userB == compC) || (userB == compD))
            {
                cow++;
                if (userB == compB)
                {
                    cow--;
                    bull++;
                }
            }
            if ((userC == compA) || (userC == compB) || (userC == compC) || (userC == compD))
            {
                cow++;
                if (userC == compC)
                {
                    cow--;
                    bull++;
                }
            }
            if ((userD == compA) || (userD == compB) || (userD == compC) || (userD == compD))
            {
                cow++;
                if (userD == compD)
                {
                    cow--;
                    bull++;
                }
            }

            //user respond
            if (bull == 1)
            {
                sBull = "БИК";
            }
            else
            {
                sBull = "БИКА";
            }
            if (cow == 1)
            {
                sCow = "КРАВА";
            }
            else
            {
                sCow = "КРАВИ";
            }
            Console.WriteLine("Имате {0} {1} и {2} {3}", bull, sBull, cow, sCow);
        }
        while (compNumber != userNumber);
        Console.WriteLine();
        Console.WriteLine("Браво !!! Вие познахте числото от {0} опита", attemptsCounter);
        if (highScore < attemptsCounter)
        {
            highScore = attemptsCounter;
        }
        Console.WriteLine("Рекорд {0} опита", highScore);

    }
}

